const http = require('http');
const fs = require('fs');
const path = require('path');

// 提供一个统一的读取文件的方法，避免重复代码
const serveFile = (filePath, res, contentType) => {
    fs.readFile(filePath, 'utf8', (err, data) => {
        if (err) {
            res.statusCode = 500;  // 如果读取文件出错，返回 500 错误
            res.end('Server error');
            return;
        }
        res.setHeader('Content-Type', contentType);
        res.end(data);
    });
};

// 创建服务器
const sv = http.createServer((req, res) => {
    let { pathname } = new URL(req.url, `http://${req.headers.host}`);
    // console.log(`请求方法：${req.method}\t请求路径：${pathname}`);

    // 根路径返回 HTML 文件
    if (pathname === '/') {
        serveFile(path.join(__dirname, 'public/html/index.html'), res, 'text/html; charset=utf-8');
    } else if (pathname === '/css/index.css') {
        serveFile(path.join(__dirname, 'public/css/index.css'), res, 'text/css; charset=utf-8');
    } else if (pathname === '/js/index.js') {
        serveFile(path.join(__dirname, 'public/js/index.js'), res, 'application/javascript; charset=utf-8');
    } else {
        // 如果路径不匹配任何文件，返回 404 页面
        res.statusCode = 404;
        res.setHeader('Content-Type', 'text/html; charset=utf-8');
        res.end('<h1>404 Not Found</h1>');
    }
});

// 启动服务器监听 3000 端口
sv.listen(3001, () => {
    console.log('Server is running at http://localhost:3001');
});